﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using CondominioWeb.Negocio;
using CondominioWeb.Dominio;

namespace CondominioWeb.Controllers
{
    public class MantenimientoController : Controller
    {
        public PagoMorosidadService PagoMorosidadService{get;set;}

        public ActionResult Index()
        {
            ICollection<Mantenimiento> modelo = PagoMorosidadService.MantenimientoListarTodos();
            return View(modelo);
        }

        public ActionResult Details(Int32 Codigo)
        {
            Mantenimiento modelo = PagoMorosidadService.MantenimientoObtener(Codigo);
            return View(modelo);
        }

        public ActionResult Create()
        {
            return View();
        } 

        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    Mantenimiento oMantenimiento = new Mantenimiento();

                    Vivienda oVivienda = PagoMorosidadService.ViviendaObtener(Int32.Parse((String)collection["oCodigo_Vivienda"]));
                    Situacion_Mantenimiento oSituacionMantenimiento =PagoMorosidadService.SituacionMantenimientoObtener( Int32.Parse((String)collection["oCodigo_Situacion_Mantenimiento"]));
                    
                    oMantenimiento.Codigo_Mantenimiento = Int32.Parse((String)collection["Codigo_Mantenimiento"]);
                    oMantenimiento.oCodigo_Vivienda = oVivienda;
                    oMantenimiento.Anio = Int32.Parse((String)collection["Anio"]);
                    oMantenimiento.Mes = Int32.Parse((String)collection["Mes"]); ;
                    oMantenimiento.Importe = Int32.Parse((String)collection["Importe"]); ;
                    oMantenimiento.Fecha_Emision = DateTime.Parse((String)collection["Fecha_Emision"]);
                    oMantenimiento.Fecha_Pago = DateTime.Parse((String)collection["Fecha_Pago"]);
                    oMantenimiento.Observaciones = (String)collection["Observaciones"];
                    oMantenimiento.oCodigo_Situacion_Mantenimiento = oSituacionMantenimiento;
                    oMantenimiento.Estado = (String)collection["Estado"];

                    PagoMorosidadService.MantenimientoDAO.Crear(oMantenimiento);

                    return RedirectToAction("Index");
                }
                else
                {
                    return View();
                }
            }
            catch
            {
                ModelState.AddModelError(String.Empty, "Error al crear mantenimiento");
                return View();
            }
        }
        
        public ActionResult Edit(int Codigo)
        {
            Mantenimiento modelo = PagoMorosidadService.MantenimientoObtener(Codigo);
            return View(modelo);
        }

        [HttpPost]
        public ActionResult Edit(int Codigo, FormCollection collection)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    Mantenimiento oMantenimiento = PagoMorosidadService.MantenimientoObtener(Codigo);
                    Vivienda oVivienda = PagoMorosidadService.ViviendaObtener(Int32.Parse((String)collection["oCodigo_Vivienda"]));
                    Situacion_Mantenimiento oSituacionMantenimiento = PagoMorosidadService.SituacionMantenimientoObtener(Int32.Parse((String)collection["oCodigo_Situacion_Mantenimiento"]));

                    oMantenimiento.Codigo_Mantenimiento = Int32.Parse((String)collection["Codigo_Mantenimiento"]);
                    oMantenimiento.oCodigo_Vivienda = oVivienda;
                    oMantenimiento.Anio = Int32.Parse((String)collection["Anio"]);
                    oMantenimiento.Mes = Int32.Parse((String)collection["Mes"]); ;
                    oMantenimiento.Importe = Int32.Parse((String)collection["Importe"]); ;
                    oMantenimiento.Fecha_Emision = DateTime.Parse((String)collection["Fecha_Emision"]);
                    oMantenimiento.Fecha_Pago = DateTime.Parse((String)collection["Fecha_Pago"]);
                    oMantenimiento.Observaciones = (String)collection["Observaciones"];
                    oMantenimiento.oCodigo_Situacion_Mantenimiento = oSituacionMantenimiento;
                    oMantenimiento.Estado = (String)collection["Estado"];

                    PagoMorosidadService.MantenimientoModificar(oMantenimiento);
                    return RedirectToAction("Index");
                }
                else 
                {
                    return View();
                }
            }
            catch
            {
                return View();
            }
        }

        public ActionResult Delete(int Codigo)
        {
            Mantenimiento modelo = PagoMorosidadService.MantenimientoObtener(Codigo);
            return View(modelo);
        }

        [HttpPost]
        public ActionResult Delete(int Codigo, FormCollection collection)
        {
            try
            {
                Mantenimiento oMantenimiento = PagoMorosidadService.MantenimientoObtener(Codigo);
                PagoMorosidadService.MantenimientoEliminar(oMantenimiento); 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}
